[i18n][forensics] Add missing routes Bug: 448189547 Change-Id: I1b40b62baa26f04c6af10bdc87bf7c7126f037b4 Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1388997 Reviewed-by: Emircan Uysaler <emircan@google.com> Fuchsia-Auto-Submit: Gary Bressler <geb@google.com> Reviewed-by: Aidan Wolter <awolter@google.com> Commit-Queue: Gary Bressler <geb@google.com> Reviewed-by: Filip Filmar <fmil@google.com> Reviewed-by: Thomas Gales <tgales@google.com>
diff --git a/bundles/assembly/BUILD.gn b/bundles/assembly/BUILD.gn index e8ea02f..abf6ba3 100644 --- a/bundles/assembly/BUILD.gn +++ b/bundles/assembly/BUILD.gn
@@ -1601,6 +1601,10 @@ ] } +assembly_input_bundle("no_remote_feedback_id") { + core_shards = [ "//src/developer/forensics/feedback_id/meta/no_remote_feedback_id.core_shard.cml" ] +} + assembly_input_bundle("feedback_large_disk") { config_data_labels = [ "//src/developer/forensics:feedback_large_disk_product_config" ] @@ -3922,6 +3926,11 @@ deps = qemu_boot_shim.deps } +assembly_input_bundle("no_intl_timezones") { + core_shards = + [ "//src/intl/intl_services/meta/no_intl_timezones.core_shard.cml" ] +} + # Assembly may select at most one bundle with `intl_services` name prefix. icu_assembly_input_bundle("intl_services") { icu_base_packages = [ "//src/intl/intl_services:pkg" ]
diff --git a/bundles/assembly/platform_aibs.gni b/bundles/assembly/platform_aibs.gni index 7293220..ac005d3 100644 --- a/bundles/assembly/platform_aibs.gni +++ b/bundles/assembly/platform_aibs.gni
@@ -309,6 +309,9 @@ "factory_data", "storage_cache_manager", + # I18n + "no_intl_timezones", + # ICU-specific version of intl_services "intl_services.icu_default_${icu_git_info.default}", @@ -342,6 +345,7 @@ "power_metrics_recorder", # Forensics + "no_remote_feedback_id", "feedback_large_disk", "feedback_remote_device_id_provider", "feedback_user_config",
diff --git a/src/developer/forensics/feedback_id/meta/no_remote_feedback_id.core_shard.cml b/src/developer/forensics/feedback_id/meta/no_remote_feedback_id.core_shard.cml new file mode 100644 index 0000000..3b2ee80 --- /dev/null +++ b/src/developer/forensics/feedback_id/meta/no_remote_feedback_id.core_shard.cml
@@ -0,0 +1,23 @@ +// Copyright 2025 The Fuchsia Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +{ + offer: [ + { + protocol: [ + "google.deviceproperty.Reader", + "google.deviceproperty.Writer", + "google.flashts.Reader", + ], + from: "void", + to: "#session-manager", + availability: "optional", + }, + { + protocol: "fuchsia.feedback.DeviceIdProvider", + from: "void", + to: "#feedback", + availability: "optional", + }, + ], +}
diff --git a/src/developer/forensics/feedback_id/sysinfo/meta/sysinfo_feedback_id.core_shard.cml.template b/src/developer/forensics/feedback_id/sysinfo/meta/sysinfo_feedback_id.core_shard.cml.template index a70e800..8ecdd8c 100644 --- a/src/developer/forensics/feedback_id/sysinfo/meta/sysinfo_feedback_id.core_shard.cml.template +++ b/src/developer/forensics/feedback_id/sysinfo/meta/sysinfo_feedback_id.core_shard.cml.template
@@ -19,6 +19,16 @@ protocol: "fuchsia.sysinfo.SysInfo", from: "parent", to: "#feedback_id", - } + }, + { + protocol: [ + "google.deviceproperty.Reader", + "google.deviceproperty.Writer", + "google.flashts.Reader", + ], + from: "void", + to: "#session-manager", + availability: "optional", + }, ], }
diff --git a/src/intl/intl_services/meta/no_intl_timezones.core_shard.cml b/src/intl/intl_services/meta/no_intl_timezones.core_shard.cml new file mode 100644 index 0000000..934a02c --- /dev/null +++ b/src/intl/intl_services/meta/no_intl_timezones.core_shard.cml
@@ -0,0 +1,13 @@ +// Copyright 2025 The Fuchsia Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +{ + offer: [ + { + protocol: "fuchsia.intl.TimeZones", + from: "void", + to: "#session-manager", + availability: "optional", + }, + ], +}
diff --git a/src/lib/assembly/platform_configuration/src/subsystems.rs b/src/lib/assembly/platform_configuration/src/subsystems.rs index 26e6ac8..efa53a3 100644 --- a/src/lib/assembly/platform_configuration/src/subsystems.rs +++ b/src/lib/assembly/platform_configuration/src/subsystems.rs
@@ -501,7 +501,7 @@ forensics::ForensicsSubsystem::define_configuration( &context_base.for_subsystem("forensics"), - &platform.forensics, + &(&platform.forensics, &platform.session), builder, ) .context("Configuring the 'Forensics' subsystem")?;
diff --git a/src/lib/assembly/platform_configuration/src/subsystems/forensics.rs b/src/lib/assembly/platform_configuration/src/subsystems/forensics.rs index dd4872d..e5f0111 100644 --- a/src/lib/assembly/platform_configuration/src/subsystems/forensics.rs +++ b/src/lib/assembly/platform_configuration/src/subsystems/forensics.rs
@@ -10,15 +10,20 @@ use assembly_config_schema::platform_settings::forensics_config::{ FeedbackIdComponentUrl, ForensicsConfig, }; +use assembly_config_schema::platform_settings::session_config::PlatformSessionConfig; use assembly_constants::{FileEntry, PackageDestination, PackageSetDestination}; pub(crate) struct ForensicsSubsystem; -impl DefineSubsystemConfiguration<ForensicsConfig> for ForensicsSubsystem { +impl DefineSubsystemConfiguration<(&ForensicsConfig, &PlatformSessionConfig)> + for ForensicsSubsystem +{ fn define_configuration( context: &ConfigurationContext<'_>, - config: &ForensicsConfig, + platform_config: &(&ForensicsConfig, &PlatformSessionConfig), builder: &mut dyn ConfigurationBuilder, ) -> anyhow::Result<()> { + let (config, session_config) = *platform_config; + if config.feedback.large_disk { builder.platform_bundle("feedback_large_disk"); } @@ -108,7 +113,11 @@ builder, )?; } - FeedbackIdComponentUrl::None => {} + FeedbackIdComponentUrl::None => { + if session_config.enabled { + builder.platform_bundle("no_remote_feedback_id"); + } + } } Ok(()) @@ -143,9 +152,13 @@ }; let forensics_config: ForensicsConfig = Default::default(); + let session_config: PlatformSessionConfig = Default::default(); let mut builder: ConfigurationBuilderImpl = Default::default(); - let result = - ForensicsSubsystem::define_configuration(&context, &forensics_config, &mut builder); + let result = ForensicsSubsystem::define_configuration( + &context, + &(&forensics_config, &session_config), + &mut builder, + ); assert!(result.is_ok()); assert!(builder.build().bundles.contains("feedback_userdebug_config")); } @@ -170,9 +183,13 @@ }; let forensics_config: ForensicsConfig = Default::default(); + let session_config: PlatformSessionConfig = Default::default(); let mut builder: ConfigurationBuilderImpl = Default::default(); - let result = - ForensicsSubsystem::define_configuration(&context, &forensics_config, &mut builder); + let result = ForensicsSubsystem::define_configuration( + &context, + &(&forensics_config, &session_config), + &mut builder, + ); assert!(result.is_err()); } @@ -197,9 +214,13 @@ }; let forensics_config: ForensicsConfig = Default::default(); + let session_config: PlatformSessionConfig = Default::default(); let mut builder: ConfigurationBuilderImpl = Default::default(); - let result = - ForensicsSubsystem::define_configuration(&context, &forensics_config, &mut builder); + let result = ForensicsSubsystem::define_configuration( + &context, + &(&forensics_config, &session_config), + &mut builder, + ); assert!(result.is_err()); } @@ -229,9 +250,13 @@ }, ..Default::default() }; + let session_config: PlatformSessionConfig = Default::default(); let mut builder: ConfigurationBuilderImpl = Default::default(); - let result = - ForensicsSubsystem::define_configuration(&context, &forensics_config, &mut builder); + let result = ForensicsSubsystem::define_configuration( + &context, + &(&forensics_config, &session_config), + &mut builder, + ); assert!(result.is_ok()); assert!( @@ -267,9 +292,13 @@ }, ..Default::default() }; + let session_config: PlatformSessionConfig = Default::default(); let mut builder: ConfigurationBuilderImpl = Default::default(); - let result = - ForensicsSubsystem::define_configuration(&context, &forensics_config, &mut builder); + let result = ForensicsSubsystem::define_configuration( + &context, + &(&forensics_config, &session_config), + &mut builder, + ); assert!(result.is_ok()); assert!(
diff --git a/src/lib/assembly/platform_configuration/src/subsystems/intl.rs b/src/lib/assembly/platform_configuration/src/subsystems/intl.rs index f793a2a..db77b17 100644 --- a/src/lib/assembly/platform_configuration/src/subsystems/intl.rs +++ b/src/lib/assembly/platform_configuration/src/subsystems/intl.rs
@@ -58,7 +58,14 @@ .icu_platform_bundle("intl_services_small_with_timezone") .context("while configuring the 'small Intl with timezone' subsystem")?; } - Type::None => { /* Skip the bundle altogether. */ } + Type::None => { + if session_config.enabled { + builder.platform_bundle("no_intl_timezones"); + } else { + // Since there's no session-manager there's no need to add the "void" + // route. + } + } } if config.include_zoneinfo_files {
diff --git a/src/ui/a11y/bin/a11y_manager/meta/a11y_manager.cml b/src/ui/a11y/bin/a11y_manager/meta/a11y_manager.cml index fff667e..0a0c95b 100644 --- a/src/ui/a11y/bin/a11y_manager/meta/a11y_manager.cml +++ b/src/ui/a11y/bin/a11y_manager/meta/a11y_manager.cml
@@ -30,7 +30,6 @@ { protocol: [ "fuchsia.feedback.LastRebootInfoProvider", - "fuchsia.intl.PropertyProvider", "fuchsia.settings.Accessibility", "fuchsia.ui.annotation.Registry", "fuchsia.ui.composition.Flatland", @@ -41,6 +40,10 @@ "fuchsia.ui.pointerinjector.Registry", ], }, + { + protocol: [ "fuchsia.intl.PropertyProvider" ], + availability: "optional", + }, ], expose: [ {
diff --git a/src/ui/meta/a11y_routes.shard.cml b/src/ui/meta/a11y_routes.shard.cml index e8b8b03..5f34274 100644 --- a/src/ui/meta/a11y_routes.shard.cml +++ b/src/ui/meta/a11y_routes.shard.cml
@@ -39,11 +39,16 @@ { protocol: [ "fuchsia.feedback.LastRebootInfoProvider", - "fuchsia.intl.PropertyProvider", "fuchsia.settings.Accessibility", ], from: "parent", - to: [ "#a11y_manager" ], + to: "#a11y_manager", + }, + { + protocol: [ "fuchsia.intl.PropertyProvider" ], + from: "parent", + to: "#a11y_manager", + availability: "optional", }, ], }
diff --git a/src/ui/meta/ui.cml b/src/ui/meta/ui.cml index a54448d..ee41caf 100644 --- a/src/ui/meta/ui.cml +++ b/src/ui/meta/ui.cml
@@ -16,6 +16,7 @@ protocol: [ "fuchsia.media.sounds.Player" ], from: "parent", to: [ "#scene_manager" ], + availability: "optional", }, { protocol: [